{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "f673923f-1cc9-449a-a178-ffbae3a43205",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "w= [2.13756953] b= [90.78228498]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "from sklearn.linear_model import LinearRegression\n",
    "x=np.array([[100],[113],[90],[89],[60],[70],[50],[45],[55],[78]])\n",
    "y=np.array([[301],[324],[285],[296],[200],[260],[300],[120],[180],[245]])\n",
    "model=LinearRegression()\n",
    "model.fit(x,y)\n",
    "print(\"w=\",model.coef_[0],\"b=\",model.intercept_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "67497250-fc27-4004-89c1-9db104149e76",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjQAAAGxCAYAAAB1Hiz1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABBw0lEQVR4nO3dfXxT5f3/8XeblgKDNq0wGFikUKcDiijW1lZRJ1/HFFTizY/BpOhUVMR51ylfb9EJOBFxXxXFuwITHGorOuaUgaLQtVLkJqXorFJBFAeYJkUgtMn5/XFGpLcUaJOc5PV8PPJ4mOs6aT4XxeTNua5zrhjDMAwBAABYWGyoCwAAADhWBBoAAGB5BBoAAGB5BBoAAGB5BBoAAGB5BBoAAGB5BBoAAGB5BBoAAGB5BBoAAGB5BBoAAGB5IQ80I0aMUEFBgSSpvLxcmZmZSk5OVn5+vg7dlaGlPgAAEN1CGmheeeUVvfvuu5Ikr9erUaNGaejQoSorK1NFRUUg6LTUBwAAEBOqzSm///57DRgwQHa7XXfffbfsdruuueYaff311+rcubM2bNigSZMmadWqVXrzzTeb7WuO1+uV1+sNPPf7/fr+++913HHHKSYmJhhDBAAAx8gwDNXU1KhXr16KjW3+PExcEGuq54477tDo0aO1b98+SdKGDRuUnZ2tzp07S5IGDx6sioqKw/Y1Z/r06Zo6dWo7jgAAAATLtm3bdPzxxzfbH5JA8/7772v58uUqLy/XLbfcIknyeDxKS0sLHBMTEyObzSaXy9ViX3JycpPvMWXKFN1+++2B5263W3369NG2bduUmJjYTiMDAABtyePxKDU1VV27dm3xuKAHmv3792vixImaM2dOvWARFxenhISEesd27NhRe/fubbGvuUCTkJDQ6DWSlJiYSKABAMBiDrdcJOiLgh9++GFlZmbqoosuqteekpKinTt31murqalRhw4dWuwDAAAI+hmahQsXaufOnbLb7ZKkvXv3avHixerbt69qa2sDx1VVVcnr9SolJUWZmZl64YUXmuwDAAAI+hmajz76SOXl5Vq/fr3Wr1+viy++WA899JA+/PBDud1uzZ8/X5I0Y8YMDR8+XDabTcOGDWu2DwAAIOhnaBquUO7SpYu6deumbt26ae7cuRo7dqzy8/Pl8/m0cuVKs8i4uGb7AAAAQnYfmuZs375dZWVlysnJUffu3Vvddzgej0dJSUlyu90sCgYAwCJa+/0dsvvQNKd3797q3bv3EfcBAIDoFfK9nAAAAI4VgQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFheSAPN7t27VVxcrF27doWyDAAAYHEhCzSvvvqq0tPTNWnSJPXp00evvvqqJGny5MmKiYkJPNLT0wOvKS8vV2ZmppKTk5Wfny/DMEJVPgAACCMhCTTV1dWaPHmyPvroI61bt07PPfec7rrrLknS2rVrtXTpUrlcLrlcLq1bt06S5PV6NWrUKA0dOlRlZWWqqKhQQUFBKMoHAABhJiSBpqamRrNnz9agQYMkSaeccopcLpfq6upUXl6uYcOGyW63y263q2vXrpKkd955R263W7NmzVL//v01bdo0vfjii6EoHwAAhJmQBJrU1FSNGzdOklRbW6uZM2fK4XBo48aNMgxDQ4YMUadOnTRixAht3bpVkrRhwwZlZ2erc+fOkqTBgweroqKi2ffwer3yeDz1HgAAIDKFdFHwhg0b1KNHD7333nuaPXu2Nm/erIEDB2rRokWqqKhQfHy8Jk6cKEnyeDxKS0sLvDYmJkY2m00ul6vJnz19+nQlJSUFHqmpqUEZEwAACL4YI4Qraw3D0Pr163XnnXcqMTFRRUVF9fq/+uor9evXTy6XS4888ohqa2s1a9asQH9qaqpKSkrUu3fvRj/b6/XK6/UGnns8HqWmpsrtdisxMbH9BgUAANqMx+NRUlLSYb+/44JYUyMxMTE69dRTVVBQoBNOOEEul0vJycmBfrvdLr/fr2+//VYpKSkqLy+v9/qamhp16NChyZ+dkJCghISEdq0fAACEh5BMOa1Y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1kXsWMvLy/XMM89o9uzZkiLzdzp27NjA79Llcmnbtm3q1q2bzjzzzIga6xdffKF77rlHb775pioqKnTCCSdowoQJEfc7/ec//6lbbrlFTzzxhDZs2CCPx6PRo0dHzDh37dqlkSNH1vvya2lsVh13U+NsqT2SxvnFF1/o6quv1owZM7R9+3adcMIJuvbaayWF4TiNCLV7926jR48exkknnWS8/PLLRlFRkZGcnGz88MMPhmEYxvr1643c3NwQV3lsamtrja5duxo1NTX12iNxrH6/38jJyTHuu+++QFskjrOhRx55xLj++usjbqyvvfaaccUVVwSef/TRR8bPfvaziBvnVVddZdx6662B55s2bTIkGa+//npEjPP88883Zs+ebUgytmzZYhhGy/9fWvX329Q4W2qPpHG+/fbbxpw5cwLHrFixwujQoYNhGOE3zog9Q3PHHXdo9OjRys7OliRt2LBB2dnZ6ty5syRp8ODBqqioCGWJx2zjxo0yDENDhgxRp06dNGLECG3dujUix/r8889r/fr1SktL09/+9jfV1tZG5DgPtX//fj355JOaMmVKxI11wIABWrFihdatWye3262nn35a//M//xNx49y1a5f69OkTeH7w7ubl5eURMc65c+fq97//fb22ln6HVv39NjXOltojaZwjR47UDTfcEHj+2WefBZY2hNs4IzLQvP/++1q+fLkeffTRQJvH41FaWlrgeUxMjGw2m1wuVyhKbBObN2/WwIEDtWjRIlVUVCg+Pl4TJ06MuLHu2bNH9957r0488UR9/fXXmjVrloYNGxZx42xo4cKFys7OVt++fSNurAMGDNDll1+u0047TXa7XaWlpZo5c2bEjXPIkCF66623AusKXn75ZZ1xxhkRM85+/fo1amtpbFYdd1PjbKk90sZ50IEDBzRz5kzddNNNksJvnBEXaPbv36+JEydqzpw59XYCjYuLa3Sr5o4dO2rv3r3BLrHNjBs3TiUlJcrMzFRaWpqeeuopvffee/L7/RE11sLCQv3www9asWKF7rvvPr333nuqrq7WSy+9FFHjbOjZZ58N/Mso0v7+lpSU6O2331Zpaalqamr0m9/8RhdeeGHEjfPOO+/UgQMHNHToUOXk5OjRRx/VzTffHHHjPFRLY4vkcR8qUsd57733qkuXLrr++uslhd84Iy7QPPzww8rMzNRFF11Urz0lJUU7d+6s11ZTU6MOHToEs7x2Zbfb5ff71bNnz4ga69dff62srKzA7upxcXEaPHiw9u/fH1HjPFRlZaUqKys1fPhwSZH39/evf/2rxowZozPOOENdunTRH//4R3355ZcRN86UlBStXr1aixcv1uDBg3XyySdr7NixETfOQ7U0tkge96EicZzLli3Ts88+q4ULFyo+Pl5S+I0z4gLNwoULtWTJEtntdtntdi1cuFA33XST5s2bp5KSksBxVVVV8nq9gS9JK7r99tu1ePHiwPM1a9YoNjZWGRkZETXW1NRU7du3r17bV199pccffzyixnmoxYsXa+TIkYEPjszMzIgaa11dnb777rvA85qaGv3www+Ki4uLqHEe1KtXLxUWFmr69Omy2WwR9/s8VEtji+RxHyrSxvnll19q3LhxmjNnjgYMGBBoD7txhmw5cjvZtm2bsWXLlsDjsssuMx577DFj586dRvfu3Y158+YZhmEYEydONEaOHBniao/NvHnzjPT0dGPlypXG8uXLjZNPPtm45pprjNra2oga6+7du42kpCRjzpw5xrZt24wnn3zSSEhIMD7//POIGuehzj77bOOll14KPI+03+miRYuMTp06GbNmzTJeeeUV47zzzjP69OljHDhwIKLGedCMGTOMs88+O/A80n6fOuSqmJbGZvVxq8HVTM21R9I49+7da/ziF78wrrvuOqOmpibw8Pv9YTfOiAs0DeXl5Rkvv/yyYRjmJWadOnUyfvrTnxrHHXecUV5eHtri2sDdd99t2O12IzU11bjllluMPXv2GIYReWP917/+ZeTk5BidOnUy0tLSjKKiIsMwIm+chmF+gHTo0MHYvHlzvfZIGqvf7zcefPBBo0+fPkZ8fLxx6qmnGmVlZYZhRNY4DcMwXC6XkZKSYnz88cf12iNpnA2/0Fsam5XH3dpAYxiRM86ioiJDUqPHof3hMs6o2217+/btKisrU05Ojrp37x7qctpVtIw1WsYpRc9YGaf1tTS2SB73oRhncEVdoAEAAJEn4hYFAwCA6EOgAQAAlkegAQAAlkegARB2DMOQ1+tt82MBRK64UBcAAA198803OvHEE9WpUyfFxMRIMoPL999/r5SUlECbJPn9fv30pz/Vp59+Kknyer2qqKjQBx98oO+++04zZswIyRgABBdXOQGwhHXr1mn06NGqqqpqsn/Lli0655xzVFtbq927d2vy5Mk6//zz9f3332vixIn1Lif9+uuvtXbtWp1yyilBqh5Ae2PKCYAlvPPOO7rsssua7U9LS9PGjRv17bffqlevXrrtttt04YUXqnPnzho1apSqqqoCj+OPP97S++oAaIwpJwBh6bPPPtOvfvWrwPNdu3apY8eOeuONN+od17VrVzmdTtXV1alz58469KRzbW1tvempQzXXDsCaOEMDICwZhqG6ujpVVVXphRde0MiRI7Vr1y5VVVWprq5On376qT744AN9++23kqTnn39eKSkpSk5O1ldffaWMjAx169ZNn3/+eYhHAiAYCDQAwlJcXOtOIB887sYbb9SePXv08ssvS5L+9a9/ye12Ky0trcnX+Xy+tikUQFhgygmAJfzjH//QoEGDJEnfffddk8cYhqFHH31UCQkJuuyyy/TAAw/owIEDKioqUrdu3QLHuVwuHThwICh1AwgOAg0ASxgxYoReffVVSdLxxx/f5DFPP/20evfurR07dujRRx/VLbfcok8//VQjRowIBJq6urpWn/0BYB1MOQGwhINnaAYNGtTkGZp//vOfevDBB/X4449LkoYMGaL169crPj5eF110kV544QVJZjB65ZVXglo7gPZHoAFgCSNGjFB5ebnKy8vVo0ePRv1DhgxRYWGh+vbtG2hLTEzUE088IZ/Pp/Hjx0uSHnzwQd14443auHFjsEoHEAScdwUQlvx+v3bs2KH09HTt27dPHo9H6enpkqQdO3Zo4MCB8vl8gcu0u3XrpmHDhkkyp5UMw9Bbb72l2bNna/Xq1YH7zpx11lm64447dMUVV6isrExdu3YNzQABtCkCDYCwVFdXp549e6qysrLZY6qqqnTqqac2ane73dq/f78WLVqkwsJCpaam1uu/5557VFtby5VOQARh6wMAAGB5rKEBAACWR6ABAACWR6ABAACWR6ABAACWR6ABAACWR6ABAACWR6ABAACWR6ABAACWR6ABAACW9/8BYTAHCepz+O4AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "y2=model.predict(x)\n",
    "plt.xlabel('面积')\n",
    "plt.ylabel('售价')\n",
    "plt.rcParams['font.sans-serif']='Simhei'\n",
    "plt.axis([40,125,100,400])\n",
    "plt.scatter(x,y,s=60,c='k',marker='o')\n",
    "plt.plot(x,y2,'r-')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "15337396-de0f-477b-a188-c50c1d933a67",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: matplotlib in d:\\programdata\\anaconda3\\lib\\site-packages (3.8.4)\n",
      "Requirement already satisfied: contourpy>=1.0.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib) (1.2.0)\n",
      "Requirement already satisfied: cycler>=0.10 in d:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib) (0.11.0)\n",
      "Requirement already satisfied: fonttools>=4.22.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib) (4.51.0)\n",
      "Requirement already satisfied: kiwisolver>=1.3.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib) (1.4.4)\n",
      "Requirement already satisfied: numpy>=1.21 in d:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib) (1.26.4)\n",
      "Requirement already satisfied: packaging>=20.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib) (23.2)\n",
      "Requirement already satisfied: pillow>=8 in d:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib) (10.3.0)\n",
      "Requirement already satisfied: pyparsing>=2.3.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib) (3.0.9)\n",
      "Requirement already satisfied: python-dateutil>=2.7 in d:\\programdata\\anaconda3\\lib\\site-packages (from matplotlib) (2.9.0.post0)\n",
      "Requirement already satisfied: six>=1.5 in d:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n"
     ]
    }
   ],
   "source": [
    "!pip install matplotlib"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "d00f5888-1db9-4824-9420-dd6ee5e8e061",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "均方误差为: 756.2936585365849\n",
      "均方根误差为: 27.500793780118144\n",
      "预测准确率为: 0.8148333769437266\n"
     ]
    }
   ],
   "source": [
    "x_test=np.array([[103],[115],[90],[89],[60],[70],[50],[45],[55],[78]])\n",
    "y_test=np.array([[301],[344],[275],[276],[206],[210],[160],[124],[190],[235]])\n",
    "mse=np.average((y2-np.array(y))**2)\n",
    "rmse=np.sqrt(mse)\n",
    "r2=model.score(x_test,y_test)\n",
    "print(\"均方误差为:\",mse)\n",
    "print(\"均方根误差为:\",rmse)\n",
    "print(\"预测准确率为:\",r2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "35f19988-f16d-4483-b5b7-6ead200881e2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "w= [   11.51226671  -282.51443231   534.2084846    401.73037118\n",
      " -1043.90460259   634.92891045   186.43568421   204.94157943\n",
      "   762.46336088    91.95399832] b= 152.5625670974632\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.datasets import load_diabetes\n",
    "from sklearn.model_selection import train_test_split\n",
    "x,y=load_diabetes().data,load_diabetes().target\n",
    "x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=8)\n",
    "model=LinearRegression()\n",
    "model.fit(x_train,y_train)\n",
    "print(\"w=\",model.coef_,\"b=\",model.intercept_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "d0f06ee9-718e-414b-8ae0-8a47f0794dd9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "模型在训练集上的预测准确率为: 0.5303801379270054\n",
      "模型在测试集上的预测准确率为: 0.4593422174874441\n"
     ]
    }
   ],
   "source": [
    "r21=model.score(x_train,y_train)\n",
    "r22=model.score(x_test,y_test)\n",
    "print(\"模型在训练集上的预测准确率为:\",r21)\n",
    "print(\"模型在测试集上的预测准确率为:\",r22)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "4be36ae7-2f60-495b-9135-5e6053a9caf6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "模型在训练集上的预测准确率为: 0.5303801379270054\n",
      "模型在训练集上的预测准确率为: 0.4325221097526062\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import Ridge\n",
    "from sklearn.datasets import load_diabetes\n",
    "from sklearn.model_selection import train_test_split\n",
    "x,y=load_diabetes().data,load_diabetes().target\n",
    "x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=8)\n",
    "model=Ridge()\n",
    "model.fit(x_train,y_train)\n",
    "r22=model.score(x_test,y_test)\n",
    "print(\"模型在训练集上的预测准确率为:\",r21)\n",
    "print(\"模型在训练集上的预测准确率为:\",r22)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "12090ed9-5f7c-4883-8257-6659adbaf5f3",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
